package com.jdk.demo.fileChannel;

import java.io.File;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

// 作用是将此通道的文件截取为给定大小，如果给定大小小于该文件的当前大小，则截取该文件，丢弃文件新末尾后面的所有字节。
// 如果给定大小大于或等于该文件的当前大小，则不修改文件。
// 无论哪种情况，如果此通道的文件位置大于给定大小，则将位置设置为该大小
public class TruncateDemo {
	
	public static void main(String[] args) throws Exception {
		ByteBuffer bytebuffer1 = ByteBuffer.wrap("12345678".getBytes());
		FileOutputStream fileOutputStream = new FileOutputStream(new File("j.txt"));
		FileChannel fileChannel = fileOutputStream.getChannel();
		fileChannel.write(bytebuffer1);
		
		System.out.println("A size=" + fileChannel.size() + " position=" + fileChannel.position());
		fileChannel.truncate(3);
		System.out.println("B size=" + fileChannel.size() + " position=" + fileChannel.position());
		
		// 生产的文件内容："123"
		fileChannel.close();
		fileOutputStream.flush();
		fileOutputStream.close();
	}

}
